package com.etone.smartAudit.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.etone.smartAudit.enums.CheckState;
import com.etone.smartAudit.enums.DataBaseType;
import com.etone.smartAudit.vo.FileVO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * @author: sovy
 * @date: 2020/11/23
 * @description: 数据导入信息表
 */

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "d_data_meta_task", autoResultMap = true)
public class DataMetaTask implements Serializable {
    /**
     * 自增id
     */
    @TableId(value = "intId", type = IdType.AUTO)
    private Integer id;

    /**
     * 任务名称
     */
    @TableField(value = "vcTaskName")
    private String taskName;

    /**
     * 服务器id
     */
    @TableField(value = "intServerId")
    private Integer serverId;

    /**
     * 服务器ip
     */
    @TableField(value = "vcServerIp")
    private String serverIp;

    /**
     * 服务器名称
     */
    @TableField(value = "vcServerName")
    private String serverName;

    /**
     * 数据库类型
     */
    @TableField(value = "vcDatabaseType")
    private DataBaseType databaseType;

    /**
     * 数据库名称
     */
    @TableField(value = "vcDatabaseName")
    private String databaseName;

    /**
     * 数据库schema
     */
    @TableField(value = "vcSchemaName")
    private String schemaName;

    /**
     * 数据库用户名
     */
    @TableField(value = "vcDatabaseUser")
    private String databaseUser;

    /**
     * 数据库密码
     */
    @TableField(value = "vcDatabasePassword")
    private String databasePassword;

    /**
     * 数据库端口
     */
    @TableField(value = "intDatabasePort")
    private Integer databasePort;

    /**
     * 数据模型id
     */
    @TableField(value = "intDataModeId")
    private Integer dataModeId;

    /**
     * 表名称
     */
    @TableField(value = "vcTableName")
    private String tableName;

    /**
     * 记录分隔符
     */
    @TableField(value = "vcRowSeparator")
    private String rowSeparator;

    /**
     * 内容分隔符
     */
    @TableField(value = "vcColumnSeparator")
    private String columnSeparator;

    /**
     * 文件名称
     */
    @TableField(value = "vcFile", typeHandler = JacksonTypeHandler.class)
    private FileVO file;

    /**
     * xx,冗余字段,同file.url
     */
    @TableField(value = "vcRelativePath")
    private String relativePath;

    /**
     * 表头行
     */
    @TableField(value = "intHeaderRow")
    private Integer headerRow;

    /**
     * 第一行数据
     */
    @TableField(value = "intFirstRow")
    private Integer firstRow;

    /**
     * 最后一行数据
     */
    @TableField(value = "intLastRow")
    private Integer lastRow;

    /**
     * 日期格式
     */
    @TableField(value = "vcDateFormat")
    private String dateFormat;

    /**
     * 日期分隔符
     */
    @TableField(value = "vcDateSeparator")
    private String dateSeparator;

    /**
     * 时间分隔符
     */
    @TableField(value = "vcTimeSeparator")
    private String timeSeparator;

    /**
     * 日期时间排序
     */
    @TableField(value = "vcDataTimeSort")
    private String dataTimeSort;

    /**
     * 字段信息
     */
    @TableField(value = "vcFieldInfo")
    private String fieldInfo;

    /**
     * 数据库导入模式，add追加，cover覆盖
     */
    @TableField(value = "vcImportMode")
    private String importMode;

    /**
     * 创建人
     */
    @TableField(value = "intCreateAdminId")
    private Integer createAdminId;

    /**
     * 创建人姓名
     */
    @TableField(value = "vcCreateAdminName")
    private String createAdminName;

    /**
     * 创建时间
     */
    @TableField(value = "dtCreateTime")
    private Date createTime;

    /**
     * 是否自动入库
     */
    @TableField(value = "isAuto")
    private Boolean isAuto;

    /**
     * 是否完结
     */
    @TableField(value = "isOver")
    private Boolean isOver;

    /**
     * 完结时间
     */
    @TableField(value = "dtOverTime")
    private Date overTime;

    /**
     * 人工导入执行人
     */
    @TableField(value = "intExecAdminId")
    private Integer execAdminId;

    /**
     * 人工导入执行时间
     */
    @TableField(value = "vcExecAdminName")
    private String execAdminName;

    /**
     * 状态
     */
    @TableField(value = "vcState")
    private CheckState state;

    /**
     * 执行次数
     */
    @TableField(value = "intExecTimes")
    private Integer execTimes;

    /**
     * 导入结果说明
     */
    @TableField(value = "vcResult")
    private String result;

    private static final long serialVersionUID = 1L;
}